<?php 
/**
 * @name 简化PHP发送POST、PUT、DELETE请求的工具 
 * @author crazymus < QQ:291445576 >
 * @version 1.0.0 
 * @licenced Apache2.0
 * @updated 2015-11-25
 */
 
class PHPPost{

	/**
	 * @name 发送POST请求 
	 * @param string 请求地址 
	 * @param array 参数 
	 * @param string 参数序列化类型:form 模拟表单 normal 普通类型 
	 * @return string URL返回值 
	 */
	 
	public static function post($url, $data = array(), $type = 'normal'){
	
		$result = self :: _send('POST', $url, $data, $type);
		return $result;
		
	}
	
	/**
	 * @name 发送PUT请求 
	 * @param string 请求地址 
	 * @param array 参数 
	 * @return string URL返回值  
	 */
	 
	public static function put($url, $data = array()){
	
		$result = self :: _send('PUT', $url, $data);
		return $result;
		
	}
	
	/**
	 * @name 发送DELETE请求  
	 * @param string 请求地址 
	 * @param array 参数  
	 * @return string URL返回值 
	 */
	 
	public static function delete($url, $data = array()){
	
		$result = self :: _send('DELETE', $url, $data);
		return $result;
		
	}
	
	/**
	 * @name 发送HTTP请求核心方法 
	 * @param string 请求类型:POST/PUT/DELETE
	 * @param string 请求地址
	 * @param array 参数 
	 * @param string 参数序列化类型:form 表单类型 normal 普通类型 
	 * @return string URL返回值 
	 */
	 
	protected static function _send($method, $url, $data = array(), $type = null){
		
		// 参数序列化 
		if($type == 'form'){
			$data_string = self :: _serializeData($data);
		}else{
			$data_string = json_encode($data);
		}

		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		//=============不检查SSL=================//
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
		 
		$result = curl_exec($ch);
		return $result;
		
	}
	
	/**
	 * @name 将数组序列化为字符串 
	 * @param array 参数 
	 * @return 类似于:name=crazymus&age=20
	 */ 
	 
	protected static function _serializeData($data){
	
		// 初始化结果集 
		$result = array();
		if(is_array($data)){
		
			foreach($data as $key => $value){
				$result[] = "$key=$value";
			}
			return implode('&', $result);
			
		}else{
			return null;
		}
		
	}
	
}
?>